When large amounts of data are to be stored in a database for different resources, it is useful to organize the data in a way that can facilitate search and retrieval of relevant data when receiving data queries or requests referring to particular resources, either generic or specific. The stored data may relate to any type of information that can be arranged logically in different classes or categories. The term “resource” is used throughout this description, although other terms could also be used such as items, assets, entities, etc. Some practical examples of resources occurring in ordinary databases are inventory items, product for sale, pieces of equipment, humans, media items, telecommunication subscribers, etc.
A plurality of attributes are typically relevant for each resource, and data referring to such attributes is stored in the database available for retrieval in response to data queries related to particular resources or classes. In practice, the data in a conventional database is often organised in a hierarchical structure where different attributes typically form columns in one or more interrelated tables in the database. In this description, the term “attribute” represents any aspect or characteristic relevant for describing a resource. Today, relational databases are typically used for holding data organized in the above class-based hierarchical manner, such as SQL (Structured Query language) databases.
In recent years, it has become increasingly interesting and useful to store information in a database in a way that allows for automatic machine-processing in a logical sense, such as interpreting and analysing the information in order to draw conclusions and infer new knowledge therefrom. This possibility may be useful, e.g., for creating and offering context-aware services which can be adapted to the consumer's current situation based on information in the database.
To enable uniform handling of information from multiple “heterogeneous” information sources, i.e. different databases, semantic annotation can be employed for different elements in the database information which can easily be identified and analysed logically by a “machine”, i.e. using software executed by a processor or computer. A concept called “RDF” (Resource Description Framework) is typically used as a language for representing various pieces of information in databases regarding resources by means of semantic annotation.
Some problems associated with the typically huge databases of today are that great amounts of stored data must be searched in order to retrieve relevant information in response to database queries referring to particular resources, which is both time consuming and process intensive, often referred to as the searching “cost”. In conventional relational databases, various solutions have been proposed for reducing the amount of data to search, referred to as the “search space”, in response to database queries, although no efficient or relatively useful technique has been proposed to reduce the searching cost specifically for semantic databases.
U.S. Pat. No. 7,363,289 B2 discloses how a user query, made to a relational database with hierarchically arranged tables, can be evaluated by means of a query optimiser. In this solution, the query optimiser generates a query execution plan for the user query based on statistical information maintained for intermediate query component, in order to search different relevant tables in a sequence order that minimises the search cost. In this document, the query execution plan is closely related to the hierarchical nature of the relational database which cannot be applied to a semantic database having the above-described “flat” ontology framework.